#!/usr/bin/env python
# -*- coding: utf-8 -*-
# datetime: 2024/5/31 下午11:35
# Author: name
# File: func_exec.py
# ide: PyCharm
# description:

class FunctionExecutor:
    def __init__(self, func_name, func_code, func_params):
        """
       初始化一个函数对象

       :param func_name: 函数名称，类型为str
       :param func_code: 函数代码，可以是任何代表函数实现的代码对象
       :param func_params: 函数参数，类型为list，包含了函数所需的参数名称
       """
        self.func_name = func_name
        self.func_code = func_code
        self.func_params = func_params

    def exec_func(self):
        """
        执行存储在self.func_code中的代码。
        根据func_params的类型（None、字符串或其它），以不同的方式调用并返回func_name函数的结果。

        参数:
        - self: 对象自身的引用。

        返回:
        - result: 调用func_name函数后的返回结果。
        """
        exec(self.func_code)
        if self.func_params is None:
            result = eval(f'{self.func_name}()')
            return result
        elif isinstance(self.func_params, str):
            result = eval(f'{self.func_name}("{self.func_params}")')
            return result
        else:
            result = eval(f'{self.func_name}({self.func_params})')
            return result
